package jml.defaultimple.web;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.SingleThreadModel;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.catalina.startup.UserConfig;

import jml.config.Config;
import jml.defaultimple.util.UFile;
import jml.defaultimple.util.UImage;

@WebServlet("/image")
public class ServletImage extends HttpServlet
{
	protected void processRequest(HttpServletRequest req, HttpServletResponse res) throws ServletException, java.io.IOException
	{
		ServletOutputStream oos = res.getOutputStream();

		try
		{
			// recibo el path del title
			String path = req.getParameter("path");

			// que imagen debo considerar como thumbnail
			String from=Config.getConfig(false).getThumbnails().getFrom();

			// nombre del thumbnail que voy a generar
			String to = Config.getConfig(false).getThumbnails().getTo();

			String ddefault = Config.getConfig(false).getThumbnails().getDefault();
			ddefault = getServletContext().getRealPath(ddefault);
			
			// verifico si hay folder
			if( UFile.exists(path+"/"+from) )
			{
				// verifico si existe el thumb. Si no existe => lo genero
				if( !UFile.exists(path+"/"+to) )
				{
					UImage.makeScaledImage(path+"/"+from,path+"/"+to, 120, 120);
				}

				// ahora lo escribo en la pagina
				res.setContentType("image/gif");
				UImage.makeScaledImage(path+"/"+to, 120, 120, oos);
			}
			else
			{
				// mando la imagen por defecto
				synchronized(oos)
				{
					UImage.makeScaledImage(ddefault, 120, 120, oos);	
				}
				
			}
			
			oos.flush();
			oos.close();
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
			throw new RuntimeException(ex);
		}
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException
	{
		processRequest(request, response);
	}
}